<?php
class SegmentsController extends AppController {

	var $name = 'Segments';
	var $uses = array('Segment','AgendasSegment','Agenda','Sucursal');

    function beforeFilter () {
        parent::beforeFilter();

		// Aplico el Layout segun la Vista o si es AJAX
		if ($this->RequestHandler->isAjax()) {
			$this->layout = 'ajax';
		}else{
			// Cambio la Vista por la del Rol
			$this->layout = strtolower($this->Session->read('VistaActual'));
		}
    }
    
	function index() {
		$this->Segment->recursive = 0;
		$this->set('segments', $this->paginate());
	}

	function view($id = null) {
		if (!$id) {
			$this->Session->setFlash(__('Invalid segment', true));
			$this->redirect(array('action' => 'index'));
		}
		$this->set('segment', $this->Segment->read(null, $id));
	}

	function add($id_agenda = null, $id_usuario = null) {

		$this->_accede('crea_agenda');
		$client_id = $this->Session->read('ClientesUsuarioLogueado.id');
		if (!empty($this->data)) {

			/*------------------------------------------------------------------------*/
			/* Si la Agenda no esta creada, la creo									  */
			/*------------------------------------------------------------------------*/

				if($this->data['Segment']['agenda_id'] == 0){
					$sucursal = $this->Sucursal->find('first', array(
												'conditions' => array('Sucursal.client_id' => $client_id)
											) );
					$sucursal_id     = $sucursal['Sucursal']['id'];
					$sucursal_nombre = $sucursal['Sucursal']['name'];
					
					$this->Agenda->create();

					// Seteo datos que no vienen del Formulario
					$this->Agenda->set(array(
						'client_id' => $client_id,
						'user_id' => $this->data['Segment']['id_usuario'],
						'sucursal_id' => $sucursal_id,
						'nombre' => $sucursal_nombre
					));

					// Creo la Agenda
					$this->Agenda->save();

					// Obtengo el ID cargado
					$id_agenda_creada = $this->Agenda->id;

					// Cargo el ID de la Agenda al DATA SET
					$this->data['Segment']['agenda_id'] = $this->Agenda->id;
				}

			/*------------------------------------------------------------------------*/
			/* Valido que el Segmento a Cargar no se superponga con otro			  */
			/*------------------------------------------------------------------------*/

				$segmento_activo = $this->Segment->query("
					SELECT 
						Segment.id,Segment.horario_desde,Segment.horario_hasta 
					FROM 
						agendas_segments AS AgendasSegment
						INNER JOIN segments as Segment ON Segment.id = AgendasSegment.segment_id
					WHERE 
						AgendasSegment.agenda_id = '".$this->data['Segment']['agenda_id']."' AND 
						Segment.day_id = '".$this->data['Segment']['day_id']."' AND (
							(CONVERT(Segment.horario_desde, TIME) < '".$this->data['Segment']['horario_desde'].":00' AND '".$this->data['Segment']['horario_desde'].":00' < CONVERT(Segment.horario_hasta, TIME))
						OR
							(CONVERT(Segment.horario_desde, TIME) < '".$this->data['Segment']['horario_hasta'].":00' AND '".$this->data['Segment']['horario_hasta'].":00' < CONVERT(Segment.horario_hasta, TIME))
						)
				;"
				);

				if(!empty($segmento_activo)){
					$this->Session->setFlash(__('El Segmento no se ha cargado porque el Rango Horario se superpone con otro Segmento.', true));
					$this->redirect('/clients/view/'.$this->Session->read('ClientesUsuarioLogueado.id').'/3');
					exit;
				}

			/*------------------------------------------------------------------------*/

			$this->Segment->create();

			// Seteo datos que no vienen del Formulario
			$this->Segment->set(array(
				'user_id' => $this->Auth->user('id')
			));

			if ($this->Segment->save($this->data)) {

				// Obtengo el ID cargado
				$segment_id = $this->Segment->id;

				// Guardo la Relacion
				$this->AgendasSegment->create();

				$this->AgendasSegment->set(array(
					'agenda_id' => $this->data['Segment']['agenda_id'],
					'segment_id' => $segment_id,
				));
				// Grabo el nuevo Usuario
				$this->AgendasSegment->save();

				$this->Session->setFlash(__('El Segmento ha sido cargado', true));
				$this->redirect('/clients/view/'.$this->Session->read('ClientesUsuarioLogueado.id').'/3');
			} else {
				$this->Session->setFlash(__('El Segmento no pudo ser cargado. Por favor, intente nuevamente.', true));
			}
		}
		$days = $this->Segment->Day->find('list');
		
		$this->set('agenda_id', $id_agenda);
		$this->set('id_usuario', $id_usuario);
		$this->set(compact('days'));
	}

	function edit($id = null) {
		$this->_accede('crea_agenda');

		if (!$id && empty($this->data)) {
			$this->Session->setFlash(__('Invalid segment', true));
			$this->redirect(array('action' => 'index'));
		}
		if($_POST){ 
			$Segment = $_POST['data']['Segment'];
			if ($this->Segment->save($Segment)) {
				$this->Session->setFlash(__('The segment has been saved', true));
			} else {
				$this->Session->setFlash(__('The segment could not be saved. Please, try again.', true));
			}
			$this->redirect('/agendas/index/'.$this->Session->read('ClientesUsuarioLogueado.id'));
			die();
		}

		$Segment = $this->Segment->read(null, $id);

		$days = $this->Segment->Day->find('list');
		//$agendas = $this->Segment->Agenda->find('list');
		$this->set(compact('days'));
		$this->set('Segment',$Segment);
	}

	function delete($id = null) {
		$this->_accede('crea_agenda');
		
		if (!$id) {
			$this->Session->setFlash(__('El Segmento no es válido', true));
			$this->redirect('/clients/view/'.$this->Session->read('ClientesUsuarioLogueado.id').'/3');
			exit;

		}
		if ($this->Segment->delete($id)) {
			$this->Session->setFlash(__('El Segmento fue borrado', true));
			$this->redirect('/clients/view/'.$this->Session->read('ClientesUsuarioLogueado.id').'/3');
			exit;
		}
		$this->Session->setFlash(__('El Segmento no se pudo borrar', true));
		$this->redirect('/clients/view/'.$this->Session->read('ClientesUsuarioLogueado.id').'/3');
		exit;
	}

}
?>